package ucar.nc2.ui.table;
import org.junit.Assert;
import org.junit.Test;
import javax.swing.table.DefaultTableModel;
/**
* Created by cwardgar on 1/9/14.
*/
public class HidableTableColumnModelTest {
@Test public void testTableModelResize() {
DefaultTableModel model = new DefaultTableModel(6, 6);
HidableTableColumnModel tcm = new HidableTableColumnModel(model);
// At start numAllColumns == numVisibleColumns.
Assert.assertEquals(tcm.getColumnCount(false), tcm.getColumnCount(true));
tcm.setColumnVisible(tcm.getColumn(1, false), false); // Remove column at modelIndex 1.
tcm.setColumnVisible(tcm.getColumn(4, false), false); // Remove column at modelIndex 4.
// We've removed 2 columns.
Assert.assertEquals(tcm.getColumnCount(false) - 2, tcm.getColumnCount(true));
model.setColumnCount(10);
Assert.assertEquals(10, tcm.getColumnCount(true));
/*
* This assertion failed in the original source code of XTableColumnModel.
* From http://www.stephenkelvin.de/XTableColumnModel/:
* "There is one gotcha with this design: If you currently have invisible columns and change your table
* model the JTable will recreate columns, but will fail to remove any invisible columns."
*/
Assert.assertEquals(10, tcm.getColumnCount(false));
}
}